#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define maxn 20005
int dp[maxn];
int main()
{
    int n,a[maxn],b[maxn],sum=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        sum+=a[i];
    }
    for(int i=0;i<n;i++)
        cin>>b[i];
    memset(dp,0,sizeof(dp));
    for(int i=0;i<n;i++)
    {
        for(int j=sum;j>=0;j--)
        {
            if(j>=a[i]) dp[j]=min(dp[j-a[i]],dp[j]+b[i]);
            else dp[j]+=b[i];
        }
    }
    int k;
    for(int i=0;i<=sum;i++)
    {
        k=max(i,dp[i]);
        sum=min(sum,k);
    }
    cout<<sum<<endl;
    return 0;
}